Open
Conversation
- Add router.js for URL-based functionality routing - Add overlay-manager.js for dynamic UI overlays - Add popup-controller.js for popup management - Add item-line-id utilities (CSS/JS) for item identification - Add demo-overlay-popup.html for testing overlays - Add scan-modal-enlarger.css for enlarged scanning modals - Refactor placard-text-enhancer.js to use router pattern - Refactor table-item-linker.js to use router pattern - Remove obsolete screenshot files from snaps/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
…refactor, tests, docs, and tooling
- css-js-toinject: add multiple injectable features and utilities
- New scripts: auto-print-buttons, auto-ok-button, order-entry, malchus-router, status-dropdown, table-item-linker, overlay-manager/popup-controller, ui-feedback
- Make SKU/Qty clickable, add status dropdown, Create Shipment/Print-All improvements (sequential printing, popup->tab interception)
- Expose global debug APIs and add comprehensive docs: AUTO-PRINT-BUTTONS-README, BUTTON-FUNCTIONS-REFERENCE, IMPLEMENTATION-SUMMARY, QUICK-START, SEQUENTIAL-PRINTING-EXPLANATION, TABS-VS-POPUPS, CODING-RULES
- Remove/replace legacy index.js and integrate router-driven setup
- DataFlow.Mobile (.NET MAUI) updates & refactor
- Upgrade project to .NET 9 (TargetFrameworks -> net9.0-*)
- Update package versions, remove Polly usage and inline resilience handlers; use AddStandardResilienceHandler
- Add DataFlow.Mobile.Tests project with placeholder tests and xUnit config
- Add keystore for Android release (placeholder file)
- Add Apply-DataFlowNet9Upgrade.ps1 automation script to apply changes and create branch/commit
- Improve DI and ApiService:
- Add IServiceScopeFactory usage, fix scope creation, propagate CancellationToken to async methods
- Safer debug logging (truncate bodies), add GetDataAsync helper
- Introduce CancellationToken across IApiService and implementations
- Rename Page -> DataPage across models, services, repos and adjust relationships (AuthenticationConfig, ActionModel, PageAction, Template, TemplateColumn, etc.)
- Implement PageService/IPageService with proper EF usage, async patterns and logging
- Add/adjust many service methods (ImportExport, BackupRestore, AuthenticationService create/update, GenericRepository convenience methods, UnitOfWork GetRepository)
- UI/viewmodel changes to use DataPage and to initialize DB on start; remove unused ActionConfiguration feature files/registration
- Update MauiProgram registrations and remove unimplemented ActionConfiguration pieces
- Documentation & tooling
- Update CLAUDE.md to document css-js-toinject folder and features
- Update solution to include DataFlow.Mobile.Tests
- Add Visual Studio layout/cache files (.vs/*)
- Add system-maintenance scripts: cleanup-space.ps1, scan-dev-artifacts.ps1, scan-system-caches.ps1, scan-user-space.ps1
- Misc
- Update local Claude permissions (.claude/settings.local.json) to allow additional bash/node/git/file read/write actions
- Various XAML / converter / view adjustments (nullables, types, small UX fixes)
- Add UI overlay/popup modules and router interception for snackbar/API overlays
This commit groups a large feature/upgrade sweep: browser injection features + docs and a major .NET MAUI upgrade and API/DB/service refactor to support .NET 9, improved DI, cancellation, safer logging, and initial tests/tooling.
…t; remove old summary - Add AUTO-PRINT-SETUP-GUIDE.md, AUTO-SUBMIT-FEATURE.md - Add detailed bugfix docs: BUGFIX-AUTO-PRINT-BUTTONS.md, BUGFIX-INFINITE-RECURSION.md, BUGFIX-WRONG-BUTTON-TRIGGER.md - Add FIX-BUTTON-ORDER.md, TAB-MANAGEMENT-SUMMARY.md and full TAB-MANAGER-README.md - Remove obsolete css-js-toinject/IMPLEMENTATION-SUMMARY.md - Update .claude/settings.local.json to allow deletion of IMPLEMENTATION-SUMMARY.md
- Create ERROR-HANDLING-SUMMARY.md with full overview, global handler, interceptors (snackbar, tf.service.post, fetch, XHR), testing, workflow comparison and benefits - Extend AUTO-SUBMIT-FEATURE.md to include automatic recovery, error detection methods, handler implementation, console success/error flows, and debugging/testing tips
…etection, add product-scan auto-submit - auto-print-buttons: remove manual window.open interception and rely on TabManager; update logs to reflect TabManager handling; simplify click promises; change Print All strategy to click Packing Slip first then Carton Label; deprecate Create Shipment button listener; improve modal detection and button visibility waiting; only auto-click based on success modal + config. - router: install/enable TabManager for outbound/packing route and enable debug; wire product-scan auto-submit setup into modal input observer; add window._handleScanError helper and call it on snackbar/API error paths to clear/refocus inputs; simplify auto-print wiring to trigger solely when the shipment-created modal appears. - status-dropdown: add setupProductScanAutoSubmit to auto-submit product-scan when a status is already filled (simulates Enter and falls back to submit button click).
…llow mv in local settings - Add silent-auto-print-buttons.js: full JSPrintManager integration for silent printing (packing slip + carton label), printer validation, parallel jobs, robust fallbacks (localhost & window-based), modal/shipment-id extraction, OverlayManager notifications, and a window.silentAutoPrint API for testing/control. - Move and massively expand documentation into css-js-toinject/docs/ (auto-print, setup guide, spec, tab-manager, error handling, sequencing, bugfix notes, quick-start, and related references). Consolidates and replaces many smaller md files with comprehensive docs. - Remove legacy/duplicated documentation files from css-js-toinject root (clean up outdated references and fragmented guides). - Update .claude/settings.local.json to allow "Bash(mv:*)" for local move operations used by tooling. This commit reorganizes docs, introduces the silent printing implementation, and adjusts local CLI permissions to support repo tooling.
…dd docs/snippet - Replace the old "Auto Print Buttons" section in Outbound Packing route to prefer window.silentAutoPrint (calls window.silentAutoPrint.handleModal()), enhance modal-detection MutationObserver and logging. - Fall back to legacy handleShipmentModalAppearance() when silent auto-print is not loaded. - Update route description to "SKU and Qty item linker + Silent auto print for outbound packing page". - Add integration documentation and ready-to-use snippet: - css-js-toinject/docs/ROUTER-CHANGES-APPLIED.md - css-js-toinject/docs/ROUTER-INTEGRATION.md - css-js-toinject/docs/ROUTER-QUICK-GUIDE.md - css-js-toinject/docs/router-integration-snippet.js Improves silent printing support (JSPrintManager) while remaining backward compatible.
…t; improve scan/status UX; make qty linker robust; add docs & update local settings - Silent auto-print: - Add automatic JSPrintManager loader with local + multiple CDN fallbacks and verification. - Include vendor JSPrintManager.js (v8.0) for local fallback. - Refactor silent-auto-print-buttons.js to intercept window.open, capture full HTML from print windows, and route captured HTML to JSPrintManager (primary) or localhost fallback. - Expose test/debug APIs and robust TabManager/modal handling; add logs and clearer failure messages. - Status dropdown & scanning: - Harden status-scan and product-scan handlers: sanitize control characters, convert scanner LF/CR/Ctrl+J to Enter, block harmful Ctrl shortcuts. - Streamline auto-fill + auto-submit workflow and ensure focus returns to product-scan (improved timing & fallback submit click). - Table item linker: - Update makeQtyItemsClickable() to trigger existing .qty-wrp click handler (preserves business logic), then set qty input safely with validation and events. - Documentation: - Add comprehensive docs for CDN loader, local JSPrintManager setup, status-dropdown workflow, and table-item-linker changes. - Misc: - Update .claude/settings.local.json permissions to allow WebSearch/WebFetch/curl/git status for docs/snippets and CDN testing. This commit makes silent printing self-contained and more reliable, tightens scanner UX for auto-submit flows, and ensures quantity editing reuses app logic (avoids bypassing validations).
- Changed .trigger('click') to element.click() for both buttons
- Matches the working approach used in auto-print-buttons.js fallback
- Should fix timeout issue where packing slip window.open wasn't being intercepted
- Increased autoClickDelay from 500ms to 2000ms (give modal more time to initialize) - Made clickPrintButtons() async with proper delays - Added 300ms delay before first button click (ensure interceptor is ready) - Added explicit wait logs for better debugging The button click handlers appear to need more time to initialize after the modal appears. The fallback works because it runs after the timeout, giving handlers plenty of time to be ready.
CRITICAL BUG FIX: clickPrintButtons() was made async but wasn't being awaited! This caused a race condition where: 1. Interceptor set up 2. clickPrintButtons() called but NOT awaited (returns immediately) 3. We start waiting for capture promise 4. Buttons haven't even been clicked yet! 5. Button clicks happen later, too late for the interceptor 6. Timeout Now properly await clickPrintButtons() so buttons are fully clicked (including all delays) before we wait for the capture promise. Evidence from logs: - "⏳ Waiting for documents" (line 2706) appeared BEFORE - "📄 Packing Slip button found" (line 2644) The log line numbers proved the timing issue!
…add docs/tests - Add simple-auto-print.js: simplified auto-clicker that clicks packing slip + carton label, installs a context-aware PrintWithUtility override, preserves context during async ops, exposes window.simpleAutoPrint API (manual triggers, config, context controls). - Add box-label-only-silent.js: dedicated silent box-label printer using JSPrintManager with DOM barcode generation, shipment-id interceptor, window fallback, and debug APIs. - Update router.js to use window.simpleAutoPrint (rename logging, call handleModal), remove legacy auto-print fallback and emit clear errors when simple-auto-print is missing. - Add extensive documentation and testing materials: SIMPLE-AUTO-PRINT-README.md, BOX-LABEL-TESTING.md, CONTEXT-AWARE-FIX.md, TIMING-FIX.md, TESTING-SETUP.md and test-box-label.html. - Improve logging and developer guidance (manual triggers, configuration tips). This introduces the new simple auto-print approach and supporting silent box-label workflow, plus docs and test pages.
…qty linker keypress - Remove large bundled JSPrintManager.js from css-js-toinject (use client/CDN-managed JSPM instead). - Add documentation and testing guides: - css-js-toinject/docs/BOX-LABEL-TESTING.md - css-js-toinject/docs/TESTING-SETUP.md - css-js-toinject/docs/SIMPLE-AUTO-PRINT-README.md - css-js-toinject/docs/CONTEXT-AWARE-FIX.md - css-js-toinject/docs/TIMING-FIX.md These cover box-label-only-silent flow, router integration, context-aware PrintWithUtility override, timing cleanup, and manual/test instructions. - Update table-item-linker.js: - Replace input/change/blur workaround with a reliable "Enter" keypress trigger to invoke the site’s quantity update logic. - Prefer jQuery trigger when available; fallback to native KeyboardEvent with compatibility getters for keyCode/which. - Ensures existing jQuery handlers (e.g. keypress on .qty-mn) fire consistently across environments. This commit prepares focused box-label silent-print testing and makes qty clicks reliably invoke the page's quantity update handlers.
- Add Sentry CDN loader + initialize logic in css-js-toinject/status-dropdown.js - Add error monitoring: MutationObserver for error overlays and interception of snackbar.show to capture server/overlay errors to Sentry with contextual tags/extra data - Wrap auto-fill / auto-submit flow with try/catch and send warnings/errors to Sentry (submit-button-missing, modal-still-visible, exception-during-submit/fill) - Reduce noisy debug logs (remove raw input char-code logging) - Add documentation: css-js-toinject/docs/SENTRY-ERROR-TRACKING.md
…Service - Created publish.ps1 to handle the publishing of the ScheduledPrintService project with options for configuration, runtime, and self-contained deployment. - Created uninstall-service.ps1 to facilitate the uninstallation of the ScheduledPrintService, including service stopping and deletion.
…, and batch processing - Updated logging configuration to include detailed file logging with daily rotation. - Added conditional registration for PrintSchedulerService based on configuration. - Introduced manual mode for API polling, allowing immediate exit after a single run. - Implemented retry logic for API calls with exponential backoff and jitter. - Enhanced OrderApiService to support batch processing of orders with improved error handling. - Updated appsettings.json to reflect new configuration options, including retry settings and manual mode. - Added support for batch actions in SubActionExecutor, allowing for bulk processing of orders. - Improved JSON parsing to handle different response shapes from the API. - Adjusted logging levels for better visibility during debugging.
- Created `api_config.sql` to define tables for Primary API, Sub Actions, Schedules, and their relationships. - Added `create-database.ps1` script to automate database creation and schema initialization. - Implemented `migrate-config-to-db.ps1` to migrate API configuration from `appsettings.json` to the SQLite database. - Introduced `fix_url_parameter.ps1` to update URL parameters in Sub Actions. - Developed `run-api.ps1` to execute APIs by their number with support for dry run and verbose output. - Added `TOKEN-RENEWAL.md` documentation for automatic token renewal process. - Created `test_picklist_api.ps1` and `test_url_params.html` for testing API endpoints and URL parameters. - Updated solution file `scheduled-print-service.sln` to include new project structure.
…ation - Implemented setup-personalized-orders.ps1 for configuring the Personalized Orders API, including database migration, token updates, and schedule enabling. - Created setup-schedule.ps1 to configure database schedules and output folder, including permissions and appsettings.json updates. - Added uninstall-service.ps1 for safely removing the ScheduledPrintService. - Developed SQL migration script update-api-2-and-create-api-4.sql to enhance API 2 and create API 4 with specific filters. - Introduced update-batch-size.ps1 to modify API batch size in the database. - Created update-schedule-configuration.ps1 to update schedule settings to run every 5 minutes from 9 AM to 9 PM, excluding Saturdays. - Added view-database-config.ps1 for viewing current database configuration, including schedules and API relationships.
- Added setup-schedule.ps1 to configure database schedules and output folder. - Introduced test_picklist_api.ps1 for testing API responses. - Created toggle-api3-actions.sql to manage Save and Print actions for API 3. - Developed uninstall-service.ps1 for safe service removal. - Implemented update-api-2-and-create-api-4.sql for API migration and configuration. - Added update-batch-size.ps1 to modify API batch size settings. - Created update-schedule-configuration.ps1 to adjust schedule settings to run every 5 minutes. - Introduced view-database-config.ps1 for viewing current database configurations.
…rror monitoring - Removed Sentry SDK loading and initialization from status-dropdown.js. - Simplified error monitoring setup by removing Sentry logging in snackbar and modal interactions. - Improved error handling for submit button and modal visibility checks. - Added UPC data string converter to table-item-linker.js for consistent data handling. - Enhanced logging for cookie token synchronization in OrderApiService and SubActionExecutor. - Added detailed changelog entries for recent enhancements and fixes. - Introduced documentation for box label format adjustments and overlay interception analysis. - Updated print files analysis to clarify interceptor behavior and improve button click handling.
…alidate JSON configurations, and split PrintCapturedHtml action - Added a token caching mechanism to reduce unnecessary token renewals in scheduled print service. - Consolidated API 3 into a single API with multiple filter branches for SS/SO and Non-SS/SO orders, improving efficiency and clarity. - Consolidated APIs 2 and 4 into a unified API with chained sub-actions for better maintainability. - Implemented a quick fix script to validate JSON configurations in SubAction and report issues. - Split the PrintCapturedHtml action in API 3 into SaveCapturedHtml and PrintSavedPdf for better separation of concerns and error handling.
…al, and token concurrency management - Added array handling in JsonElementToDictionary to support API #2 order processing. - Enhanced SPA authentication redirect logic to trigger token renewal on 401 errors during Puppeteer navigation. - Centralized token management with semaphore-based concurrency control to prevent token invalidation from concurrent logins. - Updated SQL migration script for API #3 to correct IdJsonPath and ensure proper extraction of order IDs from API responses.
- Introduced AUDIO-QUICK-START.md and AUDIO-SETUP.md for user guidance on audio features. - Created SOUND-DOWNLOAD-LINKS.md for quick access to sound resources. - Developed audio-test-demo.html for testing audio notifications and settings. - Added README.md in audio folder detailing required files and setup instructions. - Implemented volume control, audio toggling, and fallback mechanisms for audio playback. - Enhanced user interface for audio settings and notifications.
…n and C# integration - Added documentation standards for placing .md files in respective project docs folders. - Introduced a comprehensive C# Integration Guide for the Production Status Column, detailing current state, required changes, and implementation steps. - Created a CHANGELOG.md to track significant changes and enhancements, including logging improvements and styling fixes. - Documented deployment notes for token caching optimizations, including manual and PowerShell deployment steps. - Summarized enhanced styles applied to API #2, detailing CSS and JavaScript changes for improved UI. - Developed a Production Status Column Workflow document outlining data flow, implementation steps, and testing procedures.
…or chained actions
… output directory handling
…ptimize API loading in DatabaseSchedulerService
…d Production Status column feature
…ing CODE128 barcodes to SKU column
…g and new database schema
…dJsonPath in SQL scripts
…er processing feedback
…before enqueuing new orders
… and update conditions for primary API fetching
…s primary data source
…ort, and invoice combination - Implemented API #13 for fetching product details from local JSON files, including sub-actions for data retrieval and file saving. - Created API #14 for exporting customer ledger data from a wholesale order list, with sub-actions for fetching ledgers and saving to JSON files. - Developed API #15 to combine customer ledger items into invoice files, processing multiple JSON files and filtering based on store ID and sale order ID.
…ng combined GL invoices to CSV
…SubActionExecutor
…Action for folder-based processing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
css-js-toinject: add multiple injectable features and utilities
DataFlow.Mobile (.NET MAUI) updates & refactor
Documentation & tooling
Misc
This commit groups a large feature/upgrade sweep: browser injection features + docs and a major .NET MAUI upgrade and API/DB/service refactor to support .NET 9, improved DI, cancellation, safer logging, and initial tests/tooling.
Summary by cubic
Upgrades DataFlow.Mobile to .NET 9 and expands the router-driven browser injection suite with auto printing (sequential plus silent via JSPrintManager), box-label format overrides, status controls, audio feedback, and UI overlays. This improves stability, simplifies HTTP resilience, and adds docs, tooling, and initial tests.
New Features
Migration
Written for commit 3285643. Summary will update on new commits.